canon/registries/T0_Trade_Good [DRAFT v0.1]/Sheet1.csv
43 rows
| good_id | good_name_text | string_status | region_ref | good_class | era_attested | exchange_medium_ref | tradeable | sellable | quest_or_key | chapter_gate_min | care_tier | source_ref | notes | mass_class | hardness | fragility | flexibility | derived_from |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| TG_0001 | placeholder | flores_island | textile_ikat | ~1200 CE | XM_0002 | TRUE | TRUE | FALSE | CH_02 | standard | _source/02_Tier_2_Region_Pages/flores_island.md s9: 'the region's trade face is the ikat and songket cloth, the gongs (the Thread-21 vril-active instruments), and the highland agricultural surplus' | examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natu | light | soft | breakable | flexible | mass<=DEFAULTED:woven_textile(WEGST2004) via T0_Trade_Good.good_class~'textile' | hard<=DEFAULTED:woven_textile(WEGST2004) via T0_Trade_Good.good_class~'textile' | frag<=DEFAULTED:woven_textile(WEGST2004) via T0_Trade_Good.good_class~'textile' | flex<=DEFAULTED:woven_textile(WEGST2004) via T0_Trade_ | |
| TG_0002 | placeholder | flores_island | textile_songket | ~1200 CE | XM_0002 | TRUE | TRUE | FALSE | CH_02 | standard | _source/02_Tier_2_Region_Pages/flores_island.md s9: 'the region's trade face is the ikat and songket cloth, the gongs (the Thread-21 vril-active instruments), and the highland agricultural surplus' | examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natu | light | soft | breakable | flexible | mass<=DEFAULTED:woven_textile(WEGST2004) via T0_Trade_Good.good_class~'textile' | hard<=DEFAULTED:woven_textile(WEGST2004) via T0_Trade_Good.good_class~'textile' | frag<=DEFAULTED:woven_textile(WEGST2004) via T0_Trade_Good.good_class~'textile' | flex<=DEFAULTED:woven_textile(WEGST2004) via T0_Trade_ | |
| TG_0003 | placeholder | flores_island | metallophone_gong | ~1200 CE | XM_0002 | TRUE | TRUE | FALSE | CH_02 | elevated | _source/02_Tier_2_Region_Pages/flores_island.md s9: 'the region's trade face is the ikat and songket cloth, the gongs (the Thread-21 vril-active instruments), and the highland agricultural surplus' | examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natu | heavy | firm | durable | semi | mass<=DEFAULTED:metallophone_bronze(ASHBY2011) via T0_Trade_Good.good_class~'metallophone_gong' | hard<=DEFAULTED:metallophone_bronze(ASHBY2011) via T0_Trade_Good.good_class~'metallophone_gong' | frag<=DEFAULTED:metallophone_bronze(ASHBY2011) via T0_Trade_Good.good_class~'metallophone_gong' | flex<= | |
| TG_0004 | placeholder | flores_island | agricultural_surplus_highland | ~1200 CE | XM_0002 | TRUE | TRUE | FALSE | CH_02 | standard | _source/02_Tier_2_Region_Pages/flores_island.md s9: 'the region's trade face is the ikat and songket cloth, the gongs (the Thread-21 vril-active instruments), and the highland agricultural surplus' | examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natu | medium | soft | breakable | semi | mass<=DEFAULTED:grain_foodstuff(ASHBY2011) via T0_Trade_Good.good_class~'agricultural_surplus' | hard<=DEFAULTED:grain_foodstuff(ASHBY2011) via T0_Trade_Good.good_class~'agricultural_surplus' | frag<=DEFAULTED:grain_foodstuff(ASHBY2011) via T0_Trade_Good.good_class~'agricultural_surplus' | flex<=DEF | |
| TG_0005 | placeholder | bali | ritual_craft | ~1200 CE | XM_0003 | TRUE | TRUE | FALSE | CH_04 | elevated | _source/02_Tier_2_Region_Pages/bali.md s9 (Minerals Resources and Trade Goods) | examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natu | medium | firm | durable | semi | mass<=DEFAULTED:hardwood_timber(FPL2010+WEGST2004) via T0_Trade_Good.good_class~'ritual_craft' | hard<=DEFAULTED:hardwood_timber(FPL2010+WEGST2004) via T0_Trade_Good.good_class~'ritual_craft' | frag<=DEFAULTED:hardwood_timber(FPL2010+WEGST2004) via T0_Trade_Good.good_class~'ritual_craft' | flex<=DEF | |
| TG_0006 | placeholder | bali | textile | ~1200 CE | XM_0003 | TRUE | TRUE | FALSE | CH_04 | standard | _source/02_Tier_2_Region_Pages/bali.md s9 (Minerals Resources and Trade Goods) | examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natu | light | soft | breakable | flexible | mass<=DEFAULTED:woven_textile(WEGST2004) via T0_Trade_Good.good_class~'textile' | hard<=DEFAULTED:woven_textile(WEGST2004) via T0_Trade_Good.good_class~'textile' | frag<=DEFAULTED:woven_textile(WEGST2004) via T0_Trade_Good.good_class~'textile' | flex<=DEFAULTED:woven_textile(WEGST2004) via T0_Trade_ | |
| TG_0007 | placeholder | bali | agricultural_surplus | ~1200 CE | XM_0003 | TRUE | TRUE | FALSE | CH_04 | standard | _source/02_Tier_2_Region_Pages/bali.md s9 (Minerals Resources and Trade Goods) | examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natu | medium | soft | breakable | semi | mass<=DEFAULTED:grain_foodstuff(ASHBY2011) via T0_Trade_Good.good_class~'agricultural_surplus' | hard<=DEFAULTED:grain_foodstuff(ASHBY2011) via T0_Trade_Good.good_class~'agricultural_surplus' | frag<=DEFAULTED:grain_foodstuff(ASHBY2011) via T0_Trade_Good.good_class~'agricultural_surplus' | flex<=DEF | |
| TG_0008 | placeholder | sumatra_java | forest_produce | ~1200 CE | XM_0004 | TRUE | TRUE | FALSE | CH_05 | standard | _source/02_Tier_2_Region_Pages/sumatra_java.md s9: 'commodity export to the entrepots, riverine transport of gold, the pack load on the coast-to-highland trail'; the build map names caldera tuff, sulfur, bark-and-ink preparation, buffalo-horn vessels, cotton | examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natu | light | soft | fragile | semi | mass<=DEFAULTED:herbaceous_tissue(WEGST2004) via T0_Trade_Good.good_class~'forest_produce' | hard<=DEFAULTED:herbaceous_tissue(WEGST2004) via T0_Trade_Good.good_class~'forest_produce' | frag<=DEFAULTED:herbaceous_tissue(WEGST2004) via T0_Trade_Good.good_class~'forest_produce' | flex<=DEFAULTED:herba | |
| TG_0009 | placeholder | sumatra_java | mineral_sulfur | ~1200 CE | XM_0004 | TRUE | TRUE | FALSE | CH_05 | standard | _source/02_Tier_2_Region_Pages/sumatra_java.md s9: 'commodity export to the entrepots, riverine transport of gold, the pack load on the coast-to-highland trail'; the build map names caldera tuff, sulfur, bark-and-ink preparation, buffalo-horn vessels, cotton | examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natu | light | soft | fragile | rigid | mass<=DEFAULTED:nitrate_mineral(KLEIN2007) via T0_Trade_Good.good_class~'sulfur' | hard<=DEFAULTED:nitrate_mineral(KLEIN2007) via T0_Trade_Good.good_class~'sulfur' | frag<=DEFAULTED:nitrate_mineral(KLEIN2007) via T0_Trade_Good.good_class~'sulfur' | flex<=DEFAULTED:nitrate_mineral(KLEIN2007) via T0_T | |
| TG_0010 | placeholder | sumatra_java | mineral_caldera_tuff | ~1200 CE | XM_0004 | TRUE | TRUE | FALSE | CH_05 | standard | _source/02_Tier_2_Region_Pages/sumatra_java.md s9: 'commodity export to the entrepots, riverine transport of gold, the pack load on the coast-to-highland trail'; the build map names caldera tuff, sulfur, bark-and-ink preparation, buffalo-horn vessels, cotton | examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natu | medium | firm | breakable | rigid | mass<=DEFAULTED:volcanic_tuff(KLEIN2007) via T0_Trade_Good.good_class~'tuff' | hard<=DEFAULTED:volcanic_tuff(KLEIN2007) via T0_Trade_Good.good_class~'tuff' | frag<=DEFAULTED:volcanic_tuff(KLEIN2007) via T0_Trade_Good.good_class~'tuff' | flex<=DEFAULTED:volcanic_tuff(KLEIN2007) via T0_Trade_Good.good | |
| TG_0011 | placeholder | sumatra_java | imported_ware | ~1200 CE | XM_0004 | TRUE | TRUE | FALSE | CH_05 | standard | _source/02_Tier_2_Region_Pages/sumatra_java.md s9: 'commodity export to the entrepots, riverine transport of gold, the pack load on the coast-to-highland trail'; the build map names caldera tuff, sulfur, bark-and-ink preparation, buffalo-horn vessels, cotton | examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natu | medium | brittle | fragile | rigid | mass<=DEFAULTED:fired_clay_ceramic(ASHBY2011+GORDON1976) via T0_Trade_Good.good_class~'imported_ware' | hard<=DEFAULTED:fired_clay_ceramic(ASHBY2011+GORDON1976) via T0_Trade_Good.good_class~'imported_ware' | frag<=DEFAULTED:fired_clay_ceramic(ASHBY2011+GORDON1976) via T0_Trade_Good.good_class~'impor | |
| TG_0012 | placeholder | sumatra_java | textile_cotton | ~1200 CE | XM_0004 | TRUE | TRUE | FALSE | CH_05 | standard | _source/02_Tier_2_Region_Pages/sumatra_java.md s9: 'commodity export to the entrepots, riverine transport of gold, the pack load on the coast-to-highland trail'; the build map names caldera tuff, sulfur, bark-and-ink preparation, buffalo-horn vessels, cotton | examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natu | light | soft | breakable | flexible | mass<=DEFAULTED:woven_textile(WEGST2004) via T0_Trade_Good.good_class~'textile' | hard<=DEFAULTED:woven_textile(WEGST2004) via T0_Trade_Good.good_class~'textile' | frag<=DEFAULTED:woven_textile(WEGST2004) via T0_Trade_Good.good_class~'textile' | flex<=DEFAULTED:woven_textile(WEGST2004) via T0_Trade_ | |
| TG_0013 | placeholder | angkor_khmer | agricultural_surplus_rice | ~1200 CE | XM_0005 | TRUE | TRUE | FALSE | CH_05 | standard | _source/02_Tier_2_Region_Pages/angkor_khmer.md s9: 'the Khmer agrarian-imperial surplus (rice from the baray-fed grid, temple-domain goods) and the Cham maritime network (aloeswood/agarwood, spices, ivory, and the forest goods the Cham fleets moved in the South China Sea trade)' | examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natu | medium | soft | breakable | semi | mass<=DEFAULTED:grain_foodstuff(ASHBY2011) via T0_Trade_Good.good_class~'agricultural_surplus' | hard<=DEFAULTED:grain_foodstuff(ASHBY2011) via T0_Trade_Good.good_class~'agricultural_surplus' | frag<=DEFAULTED:grain_foodstuff(ASHBY2011) via T0_Trade_Good.good_class~'agricultural_surplus' | flex<=DEF | |
| TG_0014 | placeholder | angkor_khmer | aromatic_wood_agarwood | ~1200 CE | XM_0005 | TRUE | TRUE | FALSE | CH_05 | standard | _source/02_Tier_2_Region_Pages/angkor_khmer.md s9: 'the Khmer agrarian-imperial surplus (rice from the baray-fed grid, temple-domain goods) and the Cham maritime network (aloeswood/agarwood, spices, ivory, and the forest goods the Cham fleets moved in the South China Sea trade)' | examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natu | light | firm | breakable | rigid | mass<=DEFAULTED:aromatic_resinous_wood(FPL2010) via T0_Trade_Good.good_class~'aromatic_wood_agarwood' | hard<=DEFAULTED:aromatic_resinous_wood(FPL2010) via T0_Trade_Good.good_class~'aromatic_wood_agarwood' | frag<=DEFAULTED:aromatic_resinous_wood(FPL2010) via T0_Trade_Good.good_class~'aromatic_wood_ | |
| TG_0015 | placeholder | angkor_khmer | spice | ~1200 CE | XM_0005 | TRUE | TRUE | FALSE | CH_05 | standard | _source/02_Tier_2_Region_Pages/angkor_khmer.md s9: 'the Khmer agrarian-imperial surplus (rice from the baray-fed grid, temple-domain goods) and the Cham maritime network (aloeswood/agarwood, spices, ivory, and the forest goods the Cham fleets moved in the South China Sea trade)' | examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natu | light | soft | fragile | semi | mass<=DEFAULTED:dry_spice(WEGST2004) via T0_Trade_Good.good_class~'spice' | hard<=DEFAULTED:dry_spice(WEGST2004) via T0_Trade_Good.good_class~'spice' | frag<=DEFAULTED:dry_spice(WEGST2004) via T0_Trade_Good.good_class~'spice' | flex<=DEFAULTED:dry_spice(WEGST2004) via T0_Trade_Good.good_class~'spice | |
| TG_0016 | placeholder | angkor_khmer | ivory | ~1200 CE | XM_0005 | TRUE | TRUE | FALSE | CH_05 | elevated | _source/02_Tier_2_Region_Pages/angkor_khmer.md s9: 'the Khmer agrarian-imperial surplus (rice from the baray-fed grid, temple-domain goods) and the Cham maritime network (aloeswood/agarwood, spices, ivory, and the forest goods the Cham fleets moved in the South China Sea trade)' | examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natu | medium | firm | durable | semi | mass<=DEFAULTED:ivory(CURREY2002) via T0_Trade_Good.good_class~'ivory' | hard<=DEFAULTED:ivory(CURREY2002) via T0_Trade_Good.good_class~'ivory' | frag<=DEFAULTED:ivory(CURREY2002) via T0_Trade_Good.good_class~'ivory' | flex<=DEFAULTED:ivory(CURREY2002) via T0_Trade_Good.good_class~'ivory' | |
| TG_0017 | placeholder | sri_lanka | gem | ~1200 CE | XM_0006 | TRUE | TRUE | FALSE | CH_06 | standard | _source/02_Tier_2_Region_Pages/sri_lanka.md s9 [SRC_00263, p. 206]: the long-range network, the popularization of metallic currency, and the guilds for distribution and exchange | examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natu | light | brittle | fragile | rigid | mass<=DEFAULTED:gemstone(KLEIN2007) via T0_Trade_Good.good_class~'gem' | hard<=DEFAULTED:gemstone(KLEIN2007) via T0_Trade_Good.good_class~'gem' | frag<=DEFAULTED:gemstone(KLEIN2007) via T0_Trade_Good.good_class~'gem' | flex<=DEFAULTED:gemstone(KLEIN2007) via T0_Trade_Good.good_class~'gem' | |
| TG_0018 | placeholder | sri_lanka | spice | ~1200 CE | XM_0006 | TRUE | TRUE | FALSE | CH_06 | standard | _source/02_Tier_2_Region_Pages/sri_lanka.md s9 [SRC_00263, p. 206]: the long-range network, the popularization of metallic currency, and the guilds for distribution and exchange | examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natu | light | soft | fragile | semi | mass<=DEFAULTED:dry_spice(WEGST2004) via T0_Trade_Good.good_class~'spice' | hard<=DEFAULTED:dry_spice(WEGST2004) via T0_Trade_Good.good_class~'spice' | frag<=DEFAULTED:dry_spice(WEGST2004) via T0_Trade_Good.good_class~'spice' | flex<=DEFAULTED:dry_spice(WEGST2004) via T0_Trade_Good.good_class~'spice | |
| TG_0019 | placeholder | sri_lanka | imported_ware | ~1200 CE | XM_0006 | TRUE | TRUE | FALSE | CH_06 | standard | _source/02_Tier_2_Region_Pages/sri_lanka.md s9 [SRC_00263, p. 206]: the long-range network, the popularization of metallic currency, and the guilds for distribution and exchange | examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natu | medium | brittle | fragile | rigid | mass<=DEFAULTED:fired_clay_ceramic(ASHBY2011+GORDON1976) via T0_Trade_Good.good_class~'imported_ware' | hard<=DEFAULTED:fired_clay_ceramic(ASHBY2011+GORDON1976) via T0_Trade_Good.good_class~'imported_ware' | frag<=DEFAULTED:fired_clay_ceramic(ASHBY2011+GORDON1976) via T0_Trade_Good.good_class~'impor | |
| TG_0020 | placeholder | south_india | crucible_steel_ingot | ~1200 CE | XM_0007 | TRUE | TRUE | FALSE | CH_07 | standard | _source/02_Tier_2_Region_Pages/south_india.md s9: 'diamonds and crucible-steel ingots are weighed together and carried west toward Persia'; TRADE_04 Herbalism's first home through the Ayurvedic and Siddha pharmacopoeia | examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natu | heavy | hard | durable | semi | mass<=DEFAULTED:steel_forged(ASHBY2011) via T0_Trade_Good.good_class~'crucible_steel' | hard<=DEFAULTED:steel_forged(ASHBY2011) via T0_Trade_Good.good_class~'crucible_steel' | frag<=DEFAULTED:steel_forged(ASHBY2011) via T0_Trade_Good.good_class~'crucible_steel' | flex<=DEFAULTED:steel_forged(ASHBY20 | |
| TG_0021 | placeholder | south_india | gem_diamond | ~1200 CE | XM_0007 | TRUE | TRUE | FALSE | CH_07 | standard | _source/02_Tier_2_Region_Pages/south_india.md s9: 'diamonds and crucible-steel ingots are weighed together and carried west toward Persia'; TRADE_04 Herbalism's first home through the Ayurvedic and Siddha pharmacopoeia | examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natu | light | brittle | fragile | rigid | mass<=DEFAULTED:gemstone(KLEIN2007) via T0_Trade_Good.good_class~'gem_diamond' | hard<=DEFAULTED:gemstone(KLEIN2007) via T0_Trade_Good.good_class~'gem_diamond' | frag<=DEFAULTED:gemstone(KLEIN2007) via T0_Trade_Good.good_class~'gem_diamond' | flex<=DEFAULTED:gemstone(KLEIN2007) via T0_Trade_Good.goo | |
| TG_0022 | placeholder | south_india | pharmacopoeia_preparation | ~1200 CE | XM_0007 | TRUE | TRUE | FALSE | CH_07 | elevated | _source/02_Tier_2_Region_Pages/south_india.md s9: 'diamonds and crucible-steel ingots are weighed together and carried west toward Persia'; TRADE_04 Herbalism's first home through the Ayurvedic and Siddha pharmacopoeia | examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natu | light | soft | fragile | semi | mass<=DEFAULTED:herbaceous_tissue(WEGST2004) via T0_Trade_Good.good_class~'pharmacopoeia_preparation' | hard<=DEFAULTED:herbaceous_tissue(WEGST2004) via T0_Trade_Good.good_class~'pharmacopoeia_preparation' | frag<=DEFAULTED:herbaceous_tissue(WEGST2004) via T0_Trade_Good.good_class~'pharmacopoeia_pre | |
| TG_0023 | placeholder | swahili_coast | gold | ~1200 CE | XM_0008 | TRUE | TRUE | FALSE | CH_08 | standard | _source/02_Tier_2_Region_Pages/swahili_coast.md s9 [SRC_00184 p. 3, p. 29; SRC_00181 p. 45, p. 15]: the Sofala gold monopoly, ivory, and the ceramic import class -- Persian hatched sgraffiato, Chinese green-glazed stoneware, later Southeast Asian wares | examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natu | heavy | soft | durable | flexible | mass<=DEFAULTED:native_gold(KLEIN2007+ASHBY2011) via T0_Trade_Good.good_class~'gold' | hard<=DEFAULTED:native_gold(KLEIN2007+ASHBY2011) via T0_Trade_Good.good_class~'gold' | frag<=DEFAULTED:native_gold(KLEIN2007+ASHBY2011) via T0_Trade_Good.good_class~'gold' | flex<=DEFAULTED:native_gold(KLEIN2007+A | |
| TG_0024 | placeholder | swahili_coast | ivory | ~1200 CE | XM_0008 | TRUE | TRUE | FALSE | CH_08 | elevated | _source/02_Tier_2_Region_Pages/swahili_coast.md s9 [SRC_00184 p. 3, p. 29; SRC_00181 p. 45, p. 15]: the Sofala gold monopoly, ivory, and the ceramic import class -- Persian hatched sgraffiato, Chinese green-glazed stoneware, later Southeast Asian wares | examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natu | medium | firm | durable | semi | mass<=DEFAULTED:ivory(CURREY2002) via T0_Trade_Good.good_class~'ivory' | hard<=DEFAULTED:ivory(CURREY2002) via T0_Trade_Good.good_class~'ivory' | frag<=DEFAULTED:ivory(CURREY2002) via T0_Trade_Good.good_class~'ivory' | flex<=DEFAULTED:ivory(CURREY2002) via T0_Trade_Good.good_class~'ivory' | |
| TG_0025 | placeholder | swahili_coast | ceramic_import_sgraffiato | ~1200 CE | XM_0008 | TRUE | TRUE | FALSE | CH_08 | standard | _source/02_Tier_2_Region_Pages/swahili_coast.md s9 [SRC_00184 p. 3, p. 29; SRC_00181 p. 45, p. 15]: the Sofala gold monopoly, ivory, and the ceramic import class -- Persian hatched sgraffiato, Chinese green-glazed stoneware, later Southeast Asian wares | examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natu | medium | brittle | fragile | rigid | mass<=DEFAULTED:fired_clay_ceramic(ASHBY2011+GORDON1976) via T0_Trade_Good.good_class~'ceramic_import' | hard<=DEFAULTED:fired_clay_ceramic(ASHBY2011+GORDON1976) via T0_Trade_Good.good_class~'ceramic_import' | frag<=DEFAULTED:fired_clay_ceramic(ASHBY2011+GORDON1976) via T0_Trade_Good.good_class~'cer | |
| TG_0026 | placeholder | swahili_coast | ceramic_import_stoneware | ~1200 CE | XM_0008 | TRUE | TRUE | FALSE | CH_08 | standard | _source/02_Tier_2_Region_Pages/swahili_coast.md s9 [SRC_00184 p. 3, p. 29; SRC_00181 p. 45, p. 15]: the Sofala gold monopoly, ivory, and the ceramic import class -- Persian hatched sgraffiato, Chinese green-glazed stoneware, later Southeast Asian wares | examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natu | medium | brittle | fragile | rigid | mass<=DEFAULTED:fired_clay_ceramic(ASHBY2011+GORDON1976) via T0_Trade_Good.good_class~'ceramic_import' | hard<=DEFAULTED:fired_clay_ceramic(ASHBY2011+GORDON1976) via T0_Trade_Good.good_class~'ceramic_import' | frag<=DEFAULTED:fired_clay_ceramic(ASHBY2011+GORDON1976) via T0_Trade_Good.good_class~'cer | |
| TG_0027 | placeholder | swahili_coast | textile_import | ~1200 CE | XM_0008 | TRUE | TRUE | FALSE | CH_08 | standard | _source/02_Tier_2_Region_Pages/swahili_coast.md s9 [SRC_00184 p. 3, p. 29; SRC_00181 p. 45, p. 15]: the Sofala gold monopoly, ivory, and the ceramic import class -- Persian hatched sgraffiato, Chinese green-glazed stoneware, later Southeast Asian wares | examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natu | light | soft | breakable | flexible | mass<=DEFAULTED:woven_textile(WEGST2004) via T0_Trade_Good.good_class~'textile' | hard<=DEFAULTED:woven_textile(WEGST2004) via T0_Trade_Good.good_class~'textile' | frag<=DEFAULTED:woven_textile(WEGST2004) via T0_Trade_Good.good_class~'textile' | flex<=DEFAULTED:woven_textile(WEGST2004) via T0_Trade_ | |
| TG_0028 | placeholder | ethiopia | incense | ~1200 CE | XM_0009 | TRUE | TRUE | FALSE | CH_09 | standard | _source/02_Tier_2_Region_Pages/ethiopia.md s9 [SRC_00254, p. 34]: the Red Sea economy and Adulis as a flourishing port in close commercial relations with Arabia and beyond | examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natu | light | soft | fragile | rigid | mass<=DEFAULTED:resin_incense(ASHBY2011) via T0_Trade_Good.good_class~'incense' | hard<=DEFAULTED:resin_incense(ASHBY2011) via T0_Trade_Good.good_class~'incense' | frag<=DEFAULTED:resin_incense(ASHBY2011) via T0_Trade_Good.good_class~'incense' | flex<=DEFAULTED:resin_incense(ASHBY2011) via T0_Trade_ | |
| TG_0029 | placeholder | ethiopia | ivory | ~1200 CE | XM_0009 | TRUE | TRUE | FALSE | CH_09 | elevated | _source/02_Tier_2_Region_Pages/ethiopia.md s9 [SRC_00254, p. 34]: the Red Sea economy and Adulis as a flourishing port in close commercial relations with Arabia and beyond | examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natu | medium | firm | durable | semi | mass<=DEFAULTED:ivory(CURREY2002) via T0_Trade_Good.good_class~'ivory' | hard<=DEFAULTED:ivory(CURREY2002) via T0_Trade_Good.good_class~'ivory' | frag<=DEFAULTED:ivory(CURREY2002) via T0_Trade_Good.good_class~'ivory' | flex<=DEFAULTED:ivory(CURREY2002) via T0_Trade_Good.good_class~'ivory' | |
| TG_0030 | placeholder | ethiopia | imported_ware | ~1200 CE | XM_0009 | TRUE | TRUE | FALSE | CH_09 | standard | _source/02_Tier_2_Region_Pages/ethiopia.md s9 [SRC_00254, p. 34]: the Red Sea economy and Adulis as a flourishing port in close commercial relations with Arabia and beyond | examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natu | medium | brittle | fragile | rigid | mass<=DEFAULTED:fired_clay_ceramic(ASHBY2011+GORDON1976) via T0_Trade_Good.good_class~'imported_ware' | hard<=DEFAULTED:fired_clay_ceramic(ASHBY2011+GORDON1976) via T0_Trade_Good.good_class~'imported_ware' | frag<=DEFAULTED:fired_clay_ceramic(ASHBY2011+GORDON1976) via T0_Trade_Good.good_class~'impor | |
| TG_0031 | placeholder | central_africa_congo | forest_produce_honey | ~1200 CE | XM_0011 | TRUE | TRUE | FALSE | CH_11 | standard | _source/02_Tier_2_Region_Pages/central_africa_congo.md s9 [SRC_00179, p. 149]: 'Out of the forest come meat, honey, dried meat, bark cloth dyed with...'; Fang iron-forging and iron 'finally in the form of flat spear points' | examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natu | medium | soft | fragile | flexible | mass<=DEFAULTED:honey_viscous(ASHBY2011) via T0_Trade_Good.good_class~'forest_produce_honey' | hard<=DEFAULTED:honey_viscous(ASHBY2011) via T0_Trade_Good.good_class~'forest_produce_honey' | frag<=DEFAULTED:honey_viscous(ASHBY2011) via T0_Trade_Good.good_class~'forest_produce_honey' | flex<=DEFAULTED | |
| TG_0032 | placeholder | central_africa_congo | forest_produce_meat | ~1200 CE | XM_0011 | TRUE | TRUE | FALSE | CH_11 | standard | _source/02_Tier_2_Region_Pages/central_africa_congo.md s9 [SRC_00179, p. 149]: 'Out of the forest come meat, honey, dried meat, bark cloth dyed with...'; Fang iron-forging and iron 'finally in the form of flat spear points' | examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natu | medium | soft | fragile | flexible | mass<=DEFAULTED:meat_fresh(WEGST2004) via T0_Trade_Good.good_class~'forest_produce_meat' | hard<=DEFAULTED:meat_fresh(WEGST2004) via T0_Trade_Good.good_class~'forest_produce_meat' | frag<=DEFAULTED:meat_fresh(WEGST2004) via T0_Trade_Good.good_class~'forest_produce_meat' | flex<=DEFAULTED:meat_fresh( | |
| TG_0033 | placeholder | central_africa_congo | bark_cloth | ~1200 CE | XM_0011 | TRUE | TRUE | FALSE | CH_11 | standard | _source/02_Tier_2_Region_Pages/central_africa_congo.md s9 [SRC_00179, p. 149]: 'Out of the forest come meat, honey, dried meat, bark cloth dyed with...'; Fang iron-forging and iron 'finally in the form of flat spear points' | examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natu | light | soft | breakable | flexible | mass<=DEFAULTED:bark_cloth(WEGST2004) via T0_Trade_Good.good_class~'bark_cloth' | hard<=DEFAULTED:bark_cloth(WEGST2004) via T0_Trade_Good.good_class~'bark_cloth' | frag<=DEFAULTED:bark_cloth(WEGST2004) via T0_Trade_Good.good_class~'bark_cloth' | flex<=DEFAULTED:bark_cloth(WEGST2004) via T0_Trade_Goo | |
| TG_0034 | placeholder | central_africa_congo | iron_spear_point | ~1200 CE | XM_0011 | TRUE | TRUE | FALSE | CH_11 | elevated | _source/02_Tier_2_Region_Pages/central_africa_congo.md s9 [SRC_00179, p. 149]: 'Out of the forest come meat, honey, dried meat, bark cloth dyed with...'; Fang iron-forging and iron 'finally in the form of flat spear points' | examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natu | heavy | hard | durable | semi | mass<=DEFAULTED:bloomery_iron(ASHBY2011+GORDON1976) via T0_Trade_Good.good_class~'iron' | hard<=DEFAULTED:bloomery_iron(ASHBY2011+GORDON1976) via T0_Trade_Good.good_class~'iron' | frag<=DEFAULTED:bloomery_iron(ASHBY2011+GORDON1976) via T0_Trade_Good.good_class~'iron' | flex<=DEFAULTED:bloomery_iron( | |
| TG_0035 | placeholder | west_africa | gold_dust | ~1200 CE | XM_0012 | TRUE | TRUE | FALSE | CH_12 | elevated | _source/02_Tier_2_Region_Pages/west_africa.md s9: the internal production-and-market layer, gold dust weighed against Akan brass goldweights at SC_CH12_akan_goldweights | examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natu | heavy | soft | durable | flexible | mass<=DEFAULTED:native_gold(KLEIN2007+ASHBY2011) via T0_Trade_Good.good_class~'gold' | hard<=DEFAULTED:native_gold(KLEIN2007+ASHBY2011) via T0_Trade_Good.good_class~'gold' | frag<=DEFAULTED:native_gold(KLEIN2007+ASHBY2011) via T0_Trade_Good.good_class~'gold' | flex<=DEFAULTED:native_gold(KLEIN2007+A | |
| TG_0036 | placeholder | west_africa | textile | ~1200 CE | XM_0012 | TRUE | TRUE | FALSE | CH_12 | standard | _source/02_Tier_2_Region_Pages/west_africa.md s9: the internal production-and-market layer, gold dust weighed against Akan brass goldweights at SC_CH12_akan_goldweights | examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natu | light | soft | breakable | flexible | mass<=DEFAULTED:woven_textile(WEGST2004) via T0_Trade_Good.good_class~'textile' | hard<=DEFAULTED:woven_textile(WEGST2004) via T0_Trade_Good.good_class~'textile' | frag<=DEFAULTED:woven_textile(WEGST2004) via T0_Trade_Good.good_class~'textile' | flex<=DEFAULTED:woven_textile(WEGST2004) via T0_Trade_ | |
| TG_0037 | placeholder | west_africa | agricultural_surplus | ~1200 CE | XM_0012 | TRUE | TRUE | FALSE | CH_12 | standard | _source/02_Tier_2_Region_Pages/west_africa.md s9: the internal production-and-market layer, gold dust weighed against Akan brass goldweights at SC_CH12_akan_goldweights | examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natu | medium | soft | breakable | semi | mass<=DEFAULTED:grain_foodstuff(ASHBY2011) via T0_Trade_Good.good_class~'agricultural_surplus' | hard<=DEFAULTED:grain_foodstuff(ASHBY2011) via T0_Trade_Good.good_class~'agricultural_surplus' | frag<=DEFAULTED:grain_foodstuff(ASHBY2011) via T0_Trade_Good.good_class~'agricultural_surplus' | flex<=DEF | |
| TG_0038 | placeholder | south_africa | mineral_ochre | ~1200 CE | XM_0013 | TRUE | TRUE | FALSE | CH_13 | elevated | _source/02_Tier_2_Region_Pages/south_africa.md s9 [SRC_00215; SRC_00265]: ochre as 'the region's first and last mineral'; 'ostrich eggshell, the kaross, the quiver, the clay pot... and tobacco' | examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natu | light | soft | fragile | rigid | mass<=DEFAULTED:ochre_pigment(KLEIN2007) via T0_Trade_Good.good_class~'ochre' | hard<=DEFAULTED:ochre_pigment(KLEIN2007) via T0_Trade_Good.good_class~'ochre' | frag<=DEFAULTED:ochre_pigment(KLEIN2007) via T0_Trade_Good.good_class~'ochre' | flex<=DEFAULTED:ochre_pigment(KLEIN2007) via T0_Trade_Good.g | |
| TG_0039 | placeholder | south_africa | ostrich_eggshell | ~1200 CE | XM_0013 | TRUE | TRUE | FALSE | CH_13 | standard | _source/02_Tier_2_Region_Pages/south_africa.md s9 [SRC_00215; SRC_00265]: ochre as 'the region's first and last mineral'; 'ostrich eggshell, the kaross, the quiver, the clay pot... and tobacco' | examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natu | light | brittle | fragile | rigid | mass<=DEFAULTED:eggshell(CURREY2002+ASHBY2011) via T0_Trade_Good.good_class~'ostrich_eggshell' | hard<=DEFAULTED:eggshell(CURREY2002+ASHBY2011) via T0_Trade_Good.good_class~'ostrich_eggshell' | frag<=DEFAULTED:eggshell(CURREY2002+ASHBY2011) via T0_Trade_Good.good_class~'ostrich_eggshell' | flex<=DEF | |
| TG_0040 | placeholder | south_africa | hide_kaross | ~1200 CE | XM_0013 | TRUE | TRUE | FALSE | CH_13 | standard | _source/02_Tier_2_Region_Pages/south_africa.md s9 [SRC_00215; SRC_00265]: ochre as 'the region's first and last mineral'; 'ostrich eggshell, the kaross, the quiver, the clay pot... and tobacco' | examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natu | light | soft | durable | flexible | mass<=DEFAULTED:hide_leather(WEGST2004) via T0_Trade_Good.good_class~'hide_kaross' | hard<=DEFAULTED:hide_leather(WEGST2004) via T0_Trade_Good.good_class~'hide_kaross' | frag<=DEFAULTED:hide_leather(WEGST2004) via T0_Trade_Good.good_class~'hide_kaross' | flex<=DEFAULTED:hide_leather(WEGST2004) via T | |
| TG_0041 | placeholder | south_africa | ceramic_clay_pot | ~1200 CE | XM_0013 | TRUE | TRUE | FALSE | CH_13 | standard | _source/02_Tier_2_Region_Pages/south_africa.md s9 [SRC_00215; SRC_00265]: ochre as 'the region's first and last mineral'; 'ostrich eggshell, the kaross, the quiver, the clay pot... and tobacco' | examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natu | medium | brittle | fragile | rigid | mass<=DEFAULTED:fired_clay_ceramic(ASHBY2011+GORDON1976) via T0_Trade_Good.good_class~'ceramic' | hard<=DEFAULTED:fired_clay_ceramic(ASHBY2011+GORDON1976) via T0_Trade_Good.good_class~'ceramic' | frag<=DEFAULTED:fired_clay_ceramic(ASHBY2011+GORDON1976) via T0_Trade_Good.good_class~'ceramic' | flex<= | |
| TG_0042 | placeholder | south_africa | tobacco | ~1200 CE | XM_0013 | TRUE | TRUE | FALSE | CH_13 | standard | _source/02_Tier_2_Region_Pages/south_africa.md s9 [SRC_00215; SRC_00265]: ochre as 'the region's first and last mineral'; 'ostrich eggshell, the kaross, the quiver, the clay pot... and tobacco' | examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natu | light | soft | fragile | flexible | mass<=DEFAULTED:tobacco_leaf(WEGST2004) via T0_Trade_Good.good_class~'tobacco' | hard<=DEFAULTED:tobacco_leaf(WEGST2004) via T0_Trade_Good.good_class~'tobacco' | frag<=DEFAULTED:tobacco_leaf(WEGST2004) via T0_Trade_Good.good_class~'tobacco' | flex<=DEFAULTED:tobacco_leaf(WEGST2004) via T0_Trade_Good | |
| TG_0043 | placeholder | south_africa | gold | ~1200 CE | XM_0013 | TRUE | TRUE | FALSE | CH_13 | standard | _source/02_Tier_2_Region_Pages/south_africa.md s9 [SRC_00215; SRC_00265]: ochre as 'the region's first and last mineral'; 'ostrich eggshell, the kaross, the quiver, the clay pot... and tobacco' | examples_not_limits; minted 2026-08-04. A trade good is a HISTORICAL ATTESTATION, never a computed cell -- so every row cites the region page that attests it and no row is generalised from a neighbour. good_name_text is BLANK on every row: the player-facing string is an authoring pass under the natu | heavy | soft | durable | flexible | mass<=DEFAULTED:native_gold(KLEIN2007+ASHBY2011) via T0_Trade_Good.good_class~'gold' | hard<=DEFAULTED:native_gold(KLEIN2007+ASHBY2011) via T0_Trade_Good.good_class~'gold' | frag<=DEFAULTED:native_gold(KLEIN2007+ASHBY2011) via T0_Trade_Good.good_class~'gold' | flex<=DEFAULTED:native_gold(KLEIN2007+A |